(define (inc x) (+ x 1))
(define (dec x) (- x 1))

(define (soma1 a b)
  (if (= a 0)
      b
      (inc (soma1 (dec a) b))))

;Modelo de substituição com ordem aplicativa
;(soma1 4 5)
;(inc (soma 1 (dec 4) 5))
;(inc (soma1 3 5))
;(inc (inc (soma1 (dec 3) 5)))
;(inc (inc (soma1 2 5)))
;(inc (inc (inc (soma1 (dec 2) 5))))
;(inc (inc (inc (soma1 1 5))))
;(inc (inc (inc (inc (soma1 (dec 1) 5)))))
;(inc (inc (inc (inc (soma1 0 5)))))
;(inc (inc (inc (inc 5))))
;(inc (inc (inc 6)))
;(inc (inc 7))
;(inc 8)
;9
;=> Processo recursivo

(define (soma2 a b)
  (if (= a 0)
      b
      (soma2 (dec a) (inc b))))

;Modelo de substituição com ordem aplicativa
;(soma2 4 5)
;(soma2 (dec 4) (inc 5))
;(soma2 3 6)
;(soma2 (dec 3) (inc 6))
;(soma2 2 7)
;(soma2 (dec 2) (inc 7))
;(soma2 1 8)
;(soma2 (dec 1) (inc 8))
;(soma2 0 9)
;9
;=> Processo iterativo